package com.example.teachmvandroidchart.ui

import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import com.android.frame.mvp.CommonBaseActivity
import com.example.teachmvandroidchart.databinding.ActivityLinechartBinding
import com.example.teachmvandroidchart.widget.DynamicLineChartManager
import com.gyf.immersionbar.ImmersionBar
import java.util.ArrayList


/**
 * Created by dell on 2021/8/11.
 */
class DynamicLineChartActivity: CommonBaseActivity<ActivityLinechartBinding>() {


    private var dynamicLineChartManager1: DynamicLineChartManager? = null
    private var dynamicLineChartManager2: DynamicLineChartManager? = null
    /*
    * 1.关于List在kotlin里面没有add(),clear() 方法解决办法
    *   将List改变成MutableList，MutableList源码可以发现，常用的clear、addAll等方法都有定义
    *   解决的办法就是将变量类型使用"MutableList"代替"List"就可以了，完整的定义如下代码：
    * */
    private val list: MutableList<Float> = ArrayList() //数据集合

    private val names: MutableList<String> = ArrayList() //折线名字集合

    private val colour: MutableList<Int> = ArrayList() //折线颜色集合


    override fun handleView(savedInstanceState: Bundle?) {

        intView()
        initData()
    }

    private fun intView() {
        //折线名字
        names.add("温度")
        names.add("压强")
        names.add("其他")
        //折线颜色
        colour.add(Color.CYAN)
        colour.add(Color.GREEN)
        colour.add(Color.BLUE)
        //实现一条曲线
        dynamicLineChartManager1 = DynamicLineChartManager(binding.dynamicChart1, names[0], colour[0])
        //实现多条曲线
        dynamicLineChartManager2 = DynamicLineChartManager(binding.dynamicChart2, names, colour)

        dynamicLineChartManager1!!.setYAxis(100f, 0f, 10)
        dynamicLineChartManager2!!.setYAxis(100f, 0f, 10)
        ImmersionBar.with(this).titleBar(binding.toolbar).keyboardEnable(true).init()
        ImmersionBar.with(this).titleBar(binding.toolbar).init()
        setSupportActionBar(binding.toolbar)
        val actionBar = supportActionBar
        actionBar?.setDisplayHomeAsUpEnabled(true)
    }

    override fun initListener() {
        //添加数据
        binding.addEntry.setOnClickListener {
            //添加一条曲线的数据
            dynamicLineChartManager1?.addEntry((Math.random() * 100).toFloat())
        }
        //toolbar返回按钮监听
        binding.toolbar.setNavigationOnClickListener { finish() }
    }

    private fun initData() {

        //死循环添加数据
        Thread {
            while (true) {
                try {
                    Thread.sleep(2000)
                } catch (e: InterruptedException) {
                    e.printStackTrace()
                }
                runOnUiThread {
                    //添加多条曲线的数据
                    list.add((Math.random() * 50).toFloat() + 10)
                    list.add((Math.random() * 80).toFloat() + 10)
                    list.add((Math.random() * 100).toFloat())
                    dynamicLineChartManager2!!.addEntry(list)
                    list.clear()
                }
            }
        }.start()

    }


}
